package com.itheima.system.service;

import com.itheima.common.entity.PageResult;
import com.itheima.common.entity.Result;
import com.itheima.system.pojo.User;
import com.itheima.system.pojo.vo.AssignRoleVo;
import com.itheima.system.pojo.vo.UserSimpleVo;
import io.jsonwebtoken.Claims;
import org.springframework.web.multipart.MultipartFile;

import javax.servlet.http.HttpServletRequest;
import java.io.IOException;
import java.util.List;
import java.util.Map;

/**
 * @author IntelliJ IDEA
 * @date 2020/10/23  10:33
 */
public interface UserService {

    /**
     * 新增用户
     */
    Integer addUser(User user);

    /**
     * 分页查询用户列表
     */
    PageResult<User> findAllUserByPage(Integer page, Integer size, Map<String,Object> map);

    /**
     * 根据用户id查询用户
     */
    User findUserById(String id);

    /**
     * 根据id删除用户
     */
    Integer deleteUserById(String id);

    /**
     * 修改用户
     */
    Integer updateUserByUserId(User user);

    /**
     * 给用户分配角色
     */
    void assignRoles(AssignRoleVo assignRoleVo);

    /**
     * 用户登录
     */
    String login(User user);

    /**
     * 身份验证（token验证），获取个人信息
     */
    Result profile(HttpServletRequest request, Claims claims);
    //Result profile(HttpServletRequest request);

    /**
     * 根据用户的id查询角色权限
     */
    User findUserAndRoleAndPermission(String userId);

    /**
     * 根据手机号查询用户
     */
    User findUserByPhone(String phone);

    List<UserSimpleVo> simple(String companyId);

    /**
     *  excel批量导入用户
     */
    void savaAll(List<User> userList, String companyId, String companyName);

    /**
     * 头像上传
     */
    String uploadImg(String userId, MultipartFile file) throws IOException, Exception;


}
